const User = require("../model/use.module");
class UserService {
  async createUser(user_name, password) {
    // todo: 写入数据库
    // 插入数据
    const res = await User.create({ user_name, password });
    // 表的字段user_name:user_name,password:password
    // res.dataValues返回一个包含所有字段的纯js对象 -> 对象结构与数据库的字段完全对应
    return res.dataValues;
  }
  async getUserInfo({ id, user_name, password, is_admin }) {
    // 根据传入用户名，密码
    const whereOpt = {};
    // 如果id不为空，
    id && Object.assign(whereOpt, { id });
    user_name && Object.assign(whereOpt, { user_name });
    password && Object.assign(whereOpt,{ password })
    is_admin !== undefined && Object.assign(whereOpt, { is_admin })
    const res = await User.findOne({
      attributes:['id','user_name','password','is_admin'],
      where: whereOpt
    })
    return res ? res.dataValues : null
  }
  async updateById({id,user_name,password,is_admin}) {
    const whereOpt = {id}
    const newUser = {}
    user_name && Object.assign(newUser,{user_name})
    password && Object.assign(newUser,{password})
    is_admin && Object.assign(newUser,{is_admin})
    // 将对应的字段更新
    const res = await User.update(newUser,{where: whereOpt})
    // res[0] 返回的是被更新的记录数量
    // res[1] 是被影响的记录
    return res[0] > 0 ? true : false
  }
}
// 导出一个UserService的实例
module.exports = new UserService();
